/**
 * 该文件要做成一个 Vue 插件
 *
 * 插件的使用：
 *    1. 定义插件
 *    2. 使用插件
 *
 * 1. 定义插件
 *    1. 定义成一个包含有 install 函数的对象
 *        {
 *          install(app) {
 *            // ...
 *          }
 *        }
 *    2. 定义成一个函数
 *        function (app) {
 *            // ...
 *        }
 *
 * 2. 使用插件
 *    app.use(xx插件)
 *
 * install 函数
 *    1. 会自动收到 app 应用实例
 *    2. app.component() 注册全局组件
 *    3. app.directive() 注册全局指令
 *    4. app.mixin()     注册全局混入，不推荐
 *    5. app.config.globalProperties    挂载全局的属性，让所有组件都可以直接this访问到
 *    6. app.provide()   全局提供数据下去
 */

// import focus from "./modules/focus";
// import copy from "./modules/copy";
// import waterMarker from "./modules/waterMarker";
// import draggable from "./modules/draggable";
// import auth from "./modules/auth";

const modules = import.meta.glob("./modules/*.js", {
  eager: true,
  import: "default",
});
// console.log("===modules", modules);

// 对象写法
// const directives = {
//   install(app) {
//     console.log("app", app);

//     // 全局注册指令
//     app.directive("focus", focus);
//     app.directive("copy", copy);
//     app.directive("waterMarker", waterMarker);
//     app.directive("draggable", draggable);
//     app.directive("auth", auth);
//   },
// };

// 函数写法
const directives = (app) => {
  // 全局注册指令
  // app.directive("focus", focus);
  // app.directive("copy", copy);
  // app.directive("waterMarker", waterMarker);
  // app.directive("draggable", draggable);
  // app.directive("auth", auth);

  // 通过遍历 modules 来循环注册指令
  for (let key in modules) {
    // console.log('key', key)
    // 1. 通过计算，得到 指令的名字，"./modules/auth.js" => "auth"
    const arr = key.split('/')
    const name = arr[arr.length - 1].split('.')[0]
    // console.log('name', name)
    // 2. 注册
    app.directive(name, modules[key])
  }
};

export default directives;
